package br.ufmt.model;

import java.util.ArrayList;

import br.ufmt.exception.RotuloException;

/**
 * Classe para descrever qual o tempo de lan�amento do Filme (Lan�amento, Antigo,...)
 * @author jppreti
 *
 */
public class Rotulo {
	public static ArrayList<Rotulo> rotulos = new ArrayList<Rotulo>();

	/**
	 * Atributo que armazena o nome utilizado para descrever o per�odo de lan�amento do filme
	 */
	private String nome;
	/**
	 * Atributo utilizado para armazenar um texto descritivo explicando o per�odo m�dio a ser considerado
	 * para esse R�tulo
	 */
	private String descricao;
	/**
	 * Atributo utilizado para armazenar em HORAS o tempo m�ximo para devolu��o
	 */
	private short tempoDevolucao;
	
	public Rotulo (String nome, String descricao, short tempoDevolucao) throws RotuloException {
		setNome(nome);
		setDescricao(descricao);
		setTempoDevolucao(tempoDevolucao);
	}

	public String getNome() {
		return nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public short getTempoDevolucao() {
		return tempoDevolucao;
	}

	public void setNome(String nome) throws RotuloException {
		if (nome==null || nome.length()==0)
			throw new RotuloException(RotuloException.NOME_OBRIGATORIO);
		if (nome.length()<5)
			throw new RotuloException(RotuloException.NOME_TAMANHO);
		this.nome = nome;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public void setTempoDevolucao(short tempoDevolucao) throws RotuloException {
		if (tempoDevolucao<=0)
			throw new RotuloException(RotuloException.TEMPO_DEVOLUCAO);
		this.tempoDevolucao = tempoDevolucao;
	}

	/**
	 * Guarda uma refer�ncia do objeto em um vetor
	 */
	public void salvar() {
		if (!rotulos.contains(this))
			rotulos.add(this);
	}
	
	/**
	 * Exclui a refer�ncia do objeto do vetor
	 */
	public void excluir() {
		rotulos.remove(this);
	}	
	
	/**
	 * Busca Objeto Rotulo baseado no nome do r�tulo
	 * @param nome nome do r�tulo
	 * @return Rotulo encontrado
	 */
	public static Rotulo getRotuloPorNome(String nome) {
		for (Rotulo r: rotulos) {
			if (r.getNome().equalsIgnoreCase(nome)) return r;
		}
		return null;
	}
	
	@Override
	public String toString() {
		return getNome() + " (" + getTempoDevolucao() + "h)";
	}
	
	static {
		try {
			new Rotulo("Super Lançamento","",(short)24).salvar();
			new Rotulo("Lançamento","",(short)48).salvar();
			new Rotulo("Antigo","",(short)72).salvar();
		} catch (RotuloException e) {
			e.printStackTrace();
		}
	}
}









